﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using eRechnung.Properties;

namespace eRechnung
{
    public partial class FrmEzustlgSettings : Form
    {
        public ZustellSetting zsClicked;
        private bool konfiguriert;
        public FrmEzustlgSettings()
        {
            InitializeComponent();
        }

        private void FrmEzustlgSettings_Load(object sender, EventArgs e)
        {
            var zsDefault = Settings.Default.setZustellungDefault;
            var zsConfig = Settings.Default.setZustellung;
            pictureBox1.Image = zsClicked.Image;
            konfiguriert = false;
            btnRemove.Enabled = false;
            lblKonfig.Text = "Status: Nicht konfiguriert";

            // Ist bereits mindestens ein Dienst konfiguriert?
            if (zsConfig != null)
            {
                // Ist ein Default konfiguriert
                if (zsDefault!=null)
                {
                    // Ja, wenn es der angecklickte Dienst ist, Checed setzen
                    cbxPrefered.Checked = (zsClicked.Dienst == zsDefault.Dienst);                    
                }

                konfiguriert = zsConfig.ContainsKey(zsClicked.Dienst);
                if (konfiguriert)
                {

                    cbxSignAlways.Checked = zsConfig[zsClicked.Dienst].SignAlways;                    
                    btnRemove.Enabled = true;
                    lblKonfig.Text = "Status: Konfiguriert";    
                }
            }
            if (konfiguriert)
            {
                btnSave.Text = "Speichern";
            }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            var zsDefault = Settings.Default.setZustellungDefault;
            var zsConfig = ZustellSettings.LoadSettings();

            // Nachsehen ob Handysignatur konfiguriert
            if (Settings.Default.setHandyNr == "")
            {
                if (cbxSignAlways.Checked)
                {
                    MessageBox.Show("Handysignatur ist nicht konfiguriert.", "eZustellung Einstellungen",
                                    MessageBoxButtons.OK, MessageBoxIcon.Stop);
                    return;
                }
            }

            zsClicked.SignAlways = cbxSignAlways.Checked;

            string prog = zsClicked.GetProgramPath();
            if (prog == "")
            {

                DialogResult rc =
                     MessageBox.Show(
                         "Clientprogramm " + zsClicked.ProgramPath + " nicht gefunden. In Dateisystem suchen?",
                         "eZustellung Einstellungen", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
                if (rc != DialogResult.Yes)
                {
                    return;
                }

                // Prompt for file
                oFdZustlg.CheckFileExists = true;
                oFdZustlg.FileName = Path.GetFileName(zsClicked.ProgramPath);
                oFdZustlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
                oFdZustlg.ReadOnlyChecked = true;
                rc = oFdZustlg.ShowDialog();
                if (rc != DialogResult.OK)
                {
                    return;
                }
                prog = oFdZustlg.FileName;
            }
            zsClicked.ProgramPath = prog;
            zsConfig.Remove(zsClicked.Dienst);  
            zsConfig.Add(zsClicked.Dienst, zsClicked);


            if ((cbxPrefered.Checked == true) || (zsConfig.Count == 1))
            {
                Settings.Default.setZustellungDefault = zsClicked;
            }
            zsConfig.SaveSettings();

            Close();
        }

        private void btnRemove_Click(object sender, EventArgs e)
        {
            var zsDefault = Settings.Default.setZustellungDefault;
            var zsConfig = ZustellSettings.LoadSettings();
            
            var rc2 = MessageBox.Show("Wollen Sie " + zsClicked.Dienst.ToString() + " wirklich aus der Liste der aufrufbaren Zustelldienste entfernen?",
                                      "eZustellung", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (rc2 == DialogResult.Yes)
            {
                if (zsDefault.Dienst == zsClicked.Dienst)
                {
                    Settings.Default.setZustellungDefault = null;
                }
                zsConfig.Remove(zsClicked.Dienst);
                zsConfig.SaveSettings();
                Close();
            }

        }


    }
}
